#ifndef __GlVector4_h__
#define __GlVector4_h__

#include <windows.h>

namespace GraphicLibrary
{
	class Vector4
	{
		public:
			typedef unsigned short Index;

			typedef float	Array4[4];
			inline Vector4()	{ZeroMemory(m, sizeof(Array4));}
			inline Vector4(const Vector4 &source)	{operator = (source);}

			inline Vector4&	operator = (const Vector4 &source)	{memcpy(m, source.m, sizeof(Array4)); return *this;}
			inline bool		operator == (const Vector4 &source) const	{return !operator != (source);}
#			pragma warning(disable: 4800)
			inline bool		operator != (const Vector4 &source) const	{return memcmp(m, source.m, sizeof(Array4));}
#			pragma warning(default: 4800)

			inline float&	operator () (const Index index)	{return m[index];}
			inline const float&	operator () (const Index index) const	{return m[index];}

			inline const Array4& getCore() const	{return m;}
			inline Array4& getCore()				{return m;}
		private:
			Array4	m;
	};
}

#endif	//__ValhallaVector4_h__
